﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
//using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;


namespace HanGu.Common
{
    public class FileManagement
    {
        public FileManagement()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        public static string FilePath { get; set; }
        /**/
        /// <summary>
        /// 判断是否存在指定文件
        /// </summary>
        /// <param name="Path"></param>
        /// <param name="FileName"></param>
        public static void IsCreateFile(string Path)
        {
            if (Directory.Exists(Path))
            { }
            else
            {
                FileInfo CreateFile = new FileInfo(Path);         //创建文件 
                if (!CreateFile.Exists)
                {
                    FileStream FS = CreateFile.Create();
                    FS.Close();
                }
            }
        }
        /**/
        /// <summary> 
        /// 在根目录下创建文件夹 
        /// </summary> 
        /// <param name="FolderPath">要创建的文件路径</param> 
        public static void CreateFolder(string FolderPathName)
        {
            if (FolderPathName.Trim().Length > 0)
            {
                try
                {
                    string CreatePath = FilePath = System.Web.HttpContext.Current.Server.MapPath("/" + FolderPathName).ToString();
                    if (!Directory.Exists(CreatePath))
                    {
                        Directory.CreateDirectory(CreatePath);
                    }
                }
                catch
                {
                    throw;
                }
            }
        }

        /**/
        /// <summary> 
        /// 删除一个文件夹下面的字文件夹和文件 
        /// </summary> 
        /// <param name="FolderPathName"></param> 
        public static void DeleteChildFolder(string FolderPathName)
        {
            if (FolderPathName.Trim().Length > 0)
            {
                try
                {
                    string CreatePath = System.Web.HttpContext.Current.Server.MapPath(FolderPathName).ToString();
                    if (Directory.Exists(CreatePath))
                    {
                        Directory.Delete(CreatePath, true);
                    }
                }
                catch
                {
                    throw;
                }
            }
        }

        /**/
        /// <summary> 
        /// 删除一个文件 
        /// </summary> 
        /// <param name="FilePathName"></param> 
        public static void DeleteFile(string FilePathName)
        {
            try
            {
                FileInfo DeleFile = new FileInfo(System.Web.HttpContext.Current.Server.MapPath(FilePathName).ToString());
                DeleFile.Delete();
            }
            catch
            {
            }
        }
        /// <summary>
        /// 建立一个文件
        /// </summary>
        /// <param name="FilePathName"></param>
        public static void CreateFile(string FilePathName)
        {
            try
            {
                //创建文件夹 
                string[] strPath = FilePathName.Split('/');
                CreateFolder(FilePathName.Replace("/" + strPath[strPath.Length - 1].ToString(), "")); //创建文件夹 
                FileInfo CreateFile = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + FilePathName);         //创建文件 
                if (!CreateFile.Exists)
                {
                    FileStream FS = CreateFile.Create();
                    FS.Close();
                }
            }
            catch
            {
            }
        }
        /**/
        /// <summary> 
        /// 删除整个文件夹及其字文件夹和文件 
        /// </summary> 
        /// <param name="FolderPathName"></param> 
        public static void DeleParentFolder(string FolderPathName)
        {
            try
            {
                DirectoryInfo DelFolder = new DirectoryInfo(System.Web.HttpContext.Current.Server.MapPath(FolderPathName).ToString());
                if (DelFolder.Exists)
                {
                    DelFolder.Delete();
                }
            }
            catch
            {
            }
        }
        /**/
        /// <summary> 
        /// 在文件里追加内容 
        /// </summary> 
        /// <param name="FilePathName"></param> 
        public static void ReWriteReadinnerText(string FilePathName, string WriteWord, bool IsAppend = false)
        {
            try
            {
                //建立文件夹和文件 
                //CreateFolder(FilePathName); 
                CreateFile(FilePathName);
                //得到原来文件的内容 
                //FileStream FileRead = new FileStream(AppDomain.CurrentDomain.BaseDirectory + FilePathName, FileMode.Open, FileAccess.ReadWrite);
                //StreamReader FileReadWord = new StreamReader(FileRead, System.Text.Encoding.Default);
                //string OldString = FileReadWord.ReadToEnd().ToString();
                //OldString = OldString + WriteWord;

                //把新的内容重新写入 
                StreamWriter FileWrite = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + FilePathName, IsAppend, System.Text.Encoding.Default);
                FileWrite.Write(WriteWord);
                //关闭 
                FileWrite.Close();
                //FileReadWord.Close();
                //FileRead.Close();
            }
            catch
            {
                //    throw; 
            }
        }

        /**/
        /// <summary> 
        /// 读取文件里内容 
        /// </summary> 
        /// <param name="FilePathName"></param> 
        public static string ReaderFileData(string FilePathName)
        {
            try
            {

                FileStream FileRead = new FileStream(System.Web.HttpContext.Current.Server.MapPath(FilePathName).ToString(), FileMode.Open, FileAccess.Read);
                StreamReader FileReadWord = new StreamReader(FileRead, System.Text.Encoding.Default);
                string TxtString = FileReadWord.ReadToEnd().ToString();
                //关闭 
                FileReadWord.Close();
                FileRead.Close();
                return TxtString;
            }
            catch
            {
                throw;
            }
        }
        /**/
        /// <summary> 
        /// 读取文件夹的文件 
        /// </summary> 
        /// <param name="FilePathName"></param> 
        /// <returns></returns> 
        public static DirectoryInfo checkValidSessionPath(string FilePathName)
        {
            try
            {
                DirectoryInfo MainDir = new DirectoryInfo(System.Web.HttpContext.Current.Server.MapPath(FilePathName));
                return MainDir;

            }
            catch
            {
                throw;
            }
        }

        public static bool MoveToFile(string sourceFileName, string toFileName)
        {
            bool tag = false;
            toFileName = System.Web.HttpContext.Current.Server.MapPath(toFileName);
            FileInfo file = new FileInfo(System.Web.HttpContext.Current.Server.MapPath(sourceFileName));
            if (file.Exists)
            {
                var topath = toFileName.Replace(file.Name, "");
                if (!Directory.Exists(topath))
                {
                    Directory.CreateDirectory(topath);
                }
                file.MoveTo(toFileName);
                tag = true;
            }
            return tag;
        }
    }

}
